package com.wxyzz.satserver.message.service.impl;

import com.wxyzz.common.core.utils.UserUtils;
import com.wxyzz.satserver.friend.entity.vo.FriendVO;
import com.wxyzz.satserver.message.dao.MessageMapper;
import com.wxyzz.satserver.message.dao.MessageSessionMapper;
import com.wxyzz.satserver.message.entity.MessageSession;
import com.wxyzz.satserver.message.entity.MessageSessionUserItem;
import com.wxyzz.satserver.message.entity.vo.MessageSessionVO;
import com.wxyzz.satserver.message.service.IMessageSessionService;


import io.swagger.models.auth.In;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import javax.annotation.Resource;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;

/**
 * <p>
 *  服务实现类
 * </p>
 *
 * @author wyz
 * @since 2024-11-15
 */
@Service
public class MessageSessionServiceImpl implements IMessageSessionService {
    @Resource
    private MessageSessionMapper messageSessionMapper;

    @Resource
    private MessageMapper messageMapper;

    @Override
    public List<MessageSessionVO> getMessageSessionList() {
        List<MessageSessionVO> messageSessionVOS = new ArrayList<>();
        List<Integer> sessionIds = messageSessionMapper.getSessionIdsByUserId(UserUtils.getUid());
        for (int sessionId: sessionIds) {
            MessageSessionVO messageSessionVO = new MessageSessionVO();
            List<FriendVO> friendVOList = messageSessionMapper.getFriendsBySessionId(sessionId, UserUtils.getUid());
            messageSessionVO.setSessionId(sessionId);
            messageSessionVO.setFriends(friendVOList);
            //// 4. TODO 根据会话 id 找到历史消息记录, 需要设计好 消息表
//            messageSessionVO.setLastMessage("晚上吃啥?");
            messageSessionVO.setLastMessage(messageMapper.getLastMessagesBySessionId(sessionId));
            messageSessionVOS.add(messageSessionVO);
        }
        return messageSessionVOS;
    }

    @Override
    @Transactional
    public HashMap<String,Integer> addMessageSession(int toUserId) {
        HashMap<String,Integer> resp = new HashMap<>();
        MessageSession messageSession = new MessageSession();
        messageSession.setLastTime(LocalDateTime.now());
        messageSessionMapper.insert(messageSession);
        System.out.println("⽣成新会话: " + messageSession.getSessionId());
        MessageSessionUserItem item1 = new MessageSessionUserItem();
        item1.setSessionId(messageSession.getSessionId());
        item1.setUserId(UserUtils.getUid());
        messageSessionMapper.addMessageSessionUser(item1);
        MessageSessionUserItem item2 = new MessageSessionUserItem();
        item2.setSessionId(messageSession.getSessionId());
        item2.setUserId(toUserId);
        messageSessionMapper.addMessageSessionUser(item2);
        resp.put("sessionId",messageSession.getSessionId());
        return resp;

    }
}
